package CSnab::Decorate;

use strict;
use warnings;

use base qw(mirt::Core::Constructor);

sub construct{
	my $class = shift;
	my $param = shift;
	
	return unless defined $param;
	my $decorator_class = ref $param eq 'ARRAY'
		? shift @$param
		: $param;
	
	eval "require $decorator_class";
	#рекурсивное заворачивание декораторов	
	return $decorator_class->new(
				CSnab::Decorate->construct(@_),
				ref $param eq 'ARRAY'
					? @$param
					: ()
			);
}

1;
